#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
DataEngine 调试模式使用示例
"""

import asyncio
import pandas as pd
from data_engine.utils.llm_adapter import LLMClient
from data_engine.core.engine import DataEngine
from data_engine.utils.logger import setup_logging


async def main():
    """主函数"""
    
    # 设置日志级别为DEBUG，这样可以看到所有调试信息
    setup_logging(level="DEBUG")
    
    # 创建LLM客户端（这里需要根据实际情况配置）
    llm_client = LLMClient(
        model="qwen-plus",  # 或其他模型
        api_key="your-api-key",  # 实际的API密钥
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
    )
    
    # 示例1: 创建引擎时启用调试模式
    print("=== 示例1: 初始化时启用调试模式 ===")
    engine_debug = DataEngine(
        llm_client=llm_client,
        debug_mode=True  # 启用调试模式
    )
    
    # 示例2: 创建引擎后动态设置调试模式
    print("\n=== 示例2: 动态设置调试模式 ===")
    engine_normal = DataEngine(
        llm_client=llm_client,
        debug_mode=False  # 初始化时不启用调试模式
    )
    
    # 动态启用调试模式
    engine_normal.set_debug_mode(True)
    print(f"当前调试模式状态: {engine_normal.is_debug_mode()}")
    
    # 创建测试数据
    test_data = pd.DataFrame({
        'product': ['A', 'B', 'C', 'D'],
        'sales': [100, 200, 150, 300],
        'profit': [20, 50, 30, 80]
    })
    
    # 加载数据集
    engine_debug.load_dataset(
        df=test_data,
        dataset_name="test_data",
        dataset_desc="测试产品销售数据",
        table_desc="包含产品销售和利润信息",
        field_desc={
            'product': '产品名称',
            'sales': '销售额',
            'profit': '利润'
        }
    )
    
    print("\n=== 示例3: 调试模式下的可视化处理 ===")
    # 在调试模式下处理查询
    result_debug = await engine_debug.process_query(
        question="显示各产品的销售情况",
        dataset_name="test_data",
        session_id="debug_session_001"
    )
    
    print(f"调试模式结果包含推理信息: {result_debug.analysis_result.get('reasoning') is not None}")
    
    print("\n=== 示例4: 关闭调试模式 ===")
    # 关闭调试模式
    engine_debug.set_debug_mode(False)
    
    # 再次处理相同查询
    result_normal = await engine_debug.process_query(
        question="显示各产品的销售情况",
        dataset_name="test_data",
        session_id="normal_session_001"
    )
    
    print(f"普通模式结果包含推理信息: {result_normal.analysis_result.get('reasoning') is not None}")
    
    print("\n=== 示例5: 对比调试信息 ===")
    print("调试模式下的分析结果:")
    if result_debug.analysis_result.get('reasoning'):
        print(f"  推理信息: {result_debug.analysis_result['reasoning']}")
    else:
        print("  无推理信息")
    
    print("普通模式下的分析结果:")
    if result_normal.analysis_result.get('reasoning'):
        print(f"  推理信息: {result_normal.analysis_result['reasoning']}")
    else:
        print("  无推理信息")


if __name__ == "__main__":
    # 运行示例
    asyncio.run(main()) 